﻿using System.Collections.Generic;

namespace DBProvider.Providers
{
	public interface IMaterialProvider
	{
		List<MaterialCategory> GetAllMaterialCategory();
		MaterialCategory CreateMaterialCategory(MaterialCategory theMatCat, out string msg);
		bool DeleteMaterialCategory(int theMatCatID);
		bool UpdateMaterialCategory(MaterialCategory theMatCat);
		List<Material> GetAllMaterial(int userID, int drugStoreID);
		List<Material> GetAllMaterial(int userID, int pageIndex, int pageSize, out int totalRecords, int drugStoreID);
		List<Material> GetAllMaterial(int drugStoreID);
		List<Material> GetAllMaterial(int pageIndex, int pageSize, out int totalRecords, int drugStoreID);
		List<Material> GetMaterialByCategory(int userID, int theMatCatID, int drugStoreID);
		List<Material> GetMaterialByCategory(int userID, int theMatCatID, int pageIndex, int pageSize, out int totalRecords, int drugStoreID);
		List<Material> GetMaterialByCategory(int theMatCatID, int drugStoreID);
		List<Material> GetMaterialByCategory(int theMatCatID, int pageIndex, int pageSize, out int totalRecords, int drugStoreID);
		Material CreateMaterial(Material theNewMat, out string msg);
		bool DeleteMaterial(int theMatID);
		bool UpdateMaterial(Material theMaterial);
		Material GetMaterial(int theMaterialID);
		List<Material> GetNewMaterials(int count, int drugStoreID);

		bool DeleteMaterial(List<int> lstMaterialID);

		List<RLT_MaterialAndShareTo> GetMaterialAndShareToByMaterial(int materialID);
		void CreateMaterialAndShareTo(List<RLT_MaterialAndShareTo> lstMaterialAndShareTo);
		void SaveMaterialAndShareTo(int materialID, List<RLT_MaterialAndShareTo> lstMaterialAndShareTo);

		List<Material> GetNewMaterials(int count, int drugStoreID, int userID);
	}
}
